<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
    /**
     * 运行数据库迁移
     * 创建用于存储媒体文件信息的数据表
     */
    public function up(): void
    {
        Schema::create('media', function (Blueprint $table) {
            // 主键ID，自增
            $table->id();

            // UUID，用于唯一标识媒体文件
            $table->uuid('uuid')->nullable()->unique();

            // 多态关联字段，用于关联其他模型
            $table->morphs('model');

            // 媒体集合名称
            $table->string('collection_name');

            // 媒体文件名称
            $table->string('name');

            // 实际的文件名
            $table->string('file_name');

            // MIME类型
            $table->string('mime_type')->nullable();

            // 存储磁盘
            $table->string('disk');

            // 转换后的文件存储磁盘
            $table->string('conversions_disk')->nullable();

            // 文件大小
            $table->unsignedBigInteger('size');

            // 文件处理操作的配置
            $table->json('manipulations')->nullable();

            // 自定义属性
            $table->json('custom_properties')->nullable();

            // 已生成的文件转换信息
            $table->json('generated_conversions')->nullable();

            // 响应式图片的配置信息
            $table->json('responsive_images')->nullable();

            // 排序字段
            $table->unsignedInteger('order_column')->nullable();

            // 创建和更新时间戳
            $table->timestamps();
        });
    }

    /**
     * 回滚数据库迁移
     * 删除 media 表
     */
    public function down(): void
    {
        Schema::dropIfExists('media');
    }
};